///////////////////////////////////////////////
//  Viernes 13 de abril de 2.012              //
//  Preparación alturas partido 1            //
///////////////////////////////////////////////
import guicomponents.*;

boolean controlTeclado;
boolean bolaDentro;
boolean mouseCancha;
PVector dimFrame;//Número de frames en la secuencia
int estadoAplicacion;//0--> keyFrames; 1-->golpes; 2-->alturas
PImage fondo;

int FrameInicial = 67000;
String nombreF="D_F_set2_completo_ok";
String savesPath = "../../partidos/partido3/";
String LOADPATH = savesPath + nombreF+".txt";
String OUTPATH = savesPath +nombreF+"_Revisado_out.txt";
String OUTPATHc4d = savesPath+nombreF+"_Revisado_out_c4d.txt";

String path = "/Users/Veketor/Documents/partido3/frames3/DN_";

String FileExtension = ".png";

String file="";
String[] tGolpe = new String[] {
  "Saque", "Suelo", "Raqueta", "Red", "PuntoA", "PuntoB", "Media"
};
String[] tJugador = new String[] {
  "jugador1","jugador2"
};

//                                0        1          2        3          4         5      6
PFont fuente;
float amplitud;

GTextField videoFrameTextField;
GTextField metaTextField;
GTextField tfGolpeFrame,tfGolpeX,tfGolpeZ,tfGolpeMeta;
GPanel pContenedor, pEA0, pEA1, pEA2;

//Golpes Editor GUI
GCombo cGolpeTipo;
GCombo cJugador;
GButton btnFrameGo;
GButton metaButton;
GButton bEstado0, bEstado1, bEstado2;
GButton buttonPuntoMas,buttonPuntoMenos,buttonGolpeMas,buttonGolpeMenos, buttonSaveChanges;
VideoBuffer videoLoader;
//Video Key Frame Editor GUI
GButton btnNextKF, btnPrevKF, btnDeleteKF, btnAddKF, btnChangeKFINI, btnChangeKFFIN;

Curva curvaEnEdicion;
Curva curvaAnterior;

/////////////////////////////////////////////////////////////////////////////////
//           Logica del tenis
ArrayList<Golpe> golpes;
Partido          partido;
//
sKeyFrame videoKeyFrames = new sKeyFrame();//creación de KeyFrames partidos
//////////////////////////////////////////////////////////////////////////////////
PImage keyFrameImg;
PImage keyClear;
PImage keyIni;
PImage keyEnd;


////////////////////////////////////////////////////////////////////////////////
//           SETUP
void setup() {
  size(1024, 768);
  amplitud=0.09;
  frameRate(25);
  bolaDentro=false;
  mouseCancha=false;
  fondo=loadImage("gui.png");
  fuente = createFont("Monospaced.plain", 14);
  textFont(fuente);
  dimFrame=new PVector(0, 106850);

  //Creamos Spline
  curvaEnEdicion =new Curva(true, 500, 720, 980, 720);
  curvaAnterior = new Curva(false, 500, 720, 980, 720);

  /// inicializa la logica
  golpes  = new ArrayList<Golpe>();
  partido = new Partido();

  /////////////////////////////////////////////////////////
  //                      Setup VideoLoader              //
  /////////////////////////////////////////////////////////

  PImage alt = loadImage ("alt.jpg");
  videoLoader = new VideoBuffer(FrameInicial, alt);

  controlTeclado = false;
  /////////////////////////////////////////////////////////
  //                      Setup GUI                      //
  /////////////////////////////////////////////////////////
  videoFrameTextField = new GTextField(this, " ", 924, 542, 52, 20, false);
  btnFrameGo = new GButton(this,"botones/frameGo2.png", 2, 980,545, 16,16);
  metaTextField= new GTextField(this, " ", 80, 720, 300, 20, false);
  metaButton = new GButton(this, "botones/grabarMeta.png", 2, 386, 718, 32, 22);
  buttonPuntoMas = new GButton(this, "botones/btn_mas.png", 2, 715, 575, 30, 20);
  buttonPuntoMenos = new GButton(this, "botones/btn_menos.png", 2, 680, 575, 30, 20);
  buttonGolpeMas = new GButton(this, "botones/btn_mas.png", 2, 715, 605, 30, 20);
  buttonGolpeMenos = new GButton(this, "botones/btn_menos.png", 2, 680, 605, 30, 20);
  bEstado0 = new GButton(this,"botones/boton-estado0.png", 2, 470,515, 120,40);
  bEstado1 = new GButton(this,"botones/boton-estado1.png", 2, 600,515, 120,40);
  bEstado2 = new GButton(this,"botones/boton-estado2.png", 2, 730,515, 120,40);
  ///////////////////////////////////////////////////////////////////
  tfGolpeFrame = new GTextField(this, "",680, 628, 60, 18, false);
  tfGolpeX = new GTextField(this, "",830, 650, 40, 18, false);
  tfGolpeZ = new GTextField(this, "",830, 670, 40, 18, false);
  tfGolpeMeta = new GTextField(this, "",635, 708, 190, 18, false);
  buttonSaveChanges = new GButton(this,"botones/saveChanges.png", 2, 610,730, 240,22);
  /////////////////////////////
  btnAddKF= new GButton(this,"botones/barraKey.png", 2, 600,430, 240,40);

  btnNextKF = new GButton(this,"botones/sig_key.png", 2, 740,615, 30,20);
  btnPrevKF = new GButton(this,"botones/ant_key.png", 2, 710,615, 30,20);
  btnDeleteKF= new GButton(this,"botones/boton-estado0.png", 2, 500,630, 120,40);

  btnChangeKFINI= new GButton(this,"botones/boton-estado0.png", 2, 500,670, 120,40);
  btnChangeKFFIN= new GButton(this,"botones/boton-estado0.png", 2, 500,690, 120,40);
  cGolpeTipo = new GCombo(this, tGolpe, 7, 750, 610, 100); 
  cJugador = new GCombo(this, tJugador, 2, 860, 610, 100);
  initGuiPunto();
  miniGui=false;

  estadoAplicacion=0;
  controlBotones();
  setupKeyFrameIcons();
  //cargamos keyFrames
  videoKeyFrames.readKeyFrames();
}

///////////////////////////////////////////////////////////////////////
//           DRAW
void draw() {
  image(fondo, 0, 0);
  zonasRaton();
  if (videoFrameTextField.hasFocus()==false) {
    //    videoFrameTextField.setText(""+videoLoader.getFrameNumber());
  }
  textoEnPantalla();
  drawVideo();
  if (estadoAplicacion==1) {
    smooth();
    partido.pintaGolpesPartido();
    partido.pintaGolpesPunto();
    noSmooth();
    if (miniGui) {
      guiPunto();
    }
  }
  recuadroEstado();
}


//pasar a HUD
void recuadroEstado() {
  if (estadoAplicacion==0) {
    //noFill();
    //stroke(255);
    rect(460,512,128,46);
  }
}

